package com.inmerweb.app.impl;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import com.inmerweb.app.dao.InmersionDao;
import com.inmerweb.app.domain.InmersionEntity;
import com.inmerweb.app.domain.UserEntity;
import com.inmerwebapp.services.AddMarkersView;
import com.inmerwebapp.services.InmersionService;

public class InmersionServiceImpl implements InmersionService {

	private InmersionDao inmersionDao;

	public void createInmersion(InmersionEntity inmersionEntity,
			UserEntity userEntity, AddMarkersView addMarkersView) {
		// Save userEntity
		try {

			inmersionEntity.setUser(userEntity);
			inmersionEntity.setLat(addMarkersView.getLat());
			inmersionEntity.setLng(addMarkersView.getLng());
			inmersionDao.save(inmersionEntity);

		} catch (Exception e) {
			FacesMessage message = new FacesMessage(
					FacesMessage.SEVERITY_FATAL, e.getMessage(), null);
			FacesContext.getCurrentInstance().addMessage(null, message);
			// return false;
		}
		// return true;

	}
	
	public void updateInmersion(InmersionEntity inmersionEntity, AddMarkersView addMarkersView){
		inmersionEntity.setLat(addMarkersView.getLat());
		inmersionEntity.setLng(addMarkersView.getLng());		
		System.out.println("****UPDATEINMERSION: ");
		inmersionDao.update(inmersionEntity);
		System.out.println("****UPDATEINMERSION: ");
	}

	public InmersionDao getInmersionDao() {
		return inmersionDao;
	}

	public void setInmersionDao(InmersionDao inmersionDao) {
		this.inmersionDao = inmersionDao;
	}

	/**
	 * Referencia el detalle dentro de una lista de inmersiones y devuelve la accion inmersonDetails
	 * 
	 * @param e1
	 * @param e2
	 * @return
	 */
	public String editInmersion(InmersionEntity e1, InmersionEntity e2) {

		e2.setId(e1.getId());
		e2.setUser(e1.getUser());
		e2.setCoef_prev(e1.getCoef_prev());
		e2.setCoef_salida(e1.getCoef_salida());
		e2.setLat(e1.getLat());
		e2.setLng(e1.getLng());
		e2.setInmer_date(e1.getInmer_date());

		return "inmersionDetails";
	}
}
